#include<stdio.h> 
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
//int main() {
//int g_unval;
//int g_val=100;
//
//   int main()
//{
//      char *s="hello world";
//      printf("code addr :%p\n",main);
//      //如果是&s取的是s变量存放的地址
//      printf("string rdonly addr:%p\n");
//      printf("unint addr:%p\n",&g_unval);
//      printf("init   addr:%p\n",&g_val);
//
//      char *heap=(char*)malloc(10);
//      char *heap1=(char*)malloc(10);
//      char *heap2=(char*)malloc(10);
//      char *heap3=(char*)malloc(10);
//      char *heap4=(char*)malloc(10);
//      printf("heap addr:%p\n",heap);
//
//      printf("heap1addr:%p\n",heap1);
//      printf("heap2addr:%p\n",heap2);
//      printf("heap3addr:%p\n",heap3);
//      printf("stack addr:%p\n",&s);
//      printf("stack  addr:%p\n",&heap);
//      
//      int a=10;
//      int b=20;
//      printf("stack addr:%p\n",&a);
//      printf("stack addr:%p\n",&b);
//
//
//
//
//
//
//
//
//
//



int g_val=100;

int main()
{

  if(fork()==0)
  {
    int sum=5;
    while(sum)
    {
      printf("i am child,times:%d,g_val=%d,&g_val=%p\n",sum,g_val,&g_val);
      sum--;
      sleep(1);
       if(sum==3)
       {
         printf("^^^^^^^^^^child更改数据^^^^^^^^^\n");
         g_val=3;
         printf("^^^^^^^^^^child更改数据完毕^^^^^^^^^\n");
       }
    }
  }
    else
    {
      while(1)
      {
        printf("i am father,g_val=%d,&g_val=%p\n",g_val,&g_val);
        sleep(1);
      }
    }
  
  
  return 0;
}





































  //extern char **environ; for(int i=0;environ[i];i++)
  //printf("i am a process , pid:%d ,ppod:%d\n",getpid(),getppid());
  //{
  //  printf("PATH:%s\n",getenv("PATH"));
  //  printf("HOME:%s\n",getenv("HOME"));
  //  printf("SHELL:%s\n",getenv("SHELL"));

//int main(int argc,char *argv[],char *env[]) {
//  for(int i=0;env[i];i++)
//  {
//    printf("%d->%s\n",i,env[i]);
//  }
//  //if(argc !=2) return 1;
//  //if(strcmp(argv[1],"-h")==0)
//  //{
//  //  printf("hello hh!\n");
//  //}
//  //else if(strcmp(argv[1],"-a")==0)
//  //{
//  //  printf("hello aa!\n");
//  //}
//  //else
//  //{
//  //  printf("hello else!\n");
//  //}
//  
//  //for(int i=0;i<argc;i++)
//  //{
//  //  printf("argv[%d]->%s\n",i,argv[i]);
//  //}
//  // int cnt=5;
// // while(cnt) {
// //       sleep(1);
// //       printf("I am cmd -> process!\n");
// //       cnt--;
// //   //printf("i am a process , pid:%d ,ppod:%d\n",getpid(),getppid());
// //   //sleep(1);
// // }
//  return 0;
//
//}
